Skip to content

feat: 과정 목록 조회 시 완전한 데이터 보유 과정 우선 표시#113

Merged
yongseong123 merged 4 commits into
mainfrom
feat/prioritize-complete-courses
Jun 24, 2026
Merged

feat: 과정 목록 조회 시 완전한 데이터 보유 과정 우선 표시#113
yongseong123 merged 4 commits into
mainfrom
feat/prioritize-complete-courses

Conversation

@yongseong123

Copy link
Copy Markdown
Collaborator

관련 이슈

Closes #112

개요

GET /api/coursesprioritizeFull 파라미터를 추가하여, 기관 이미지·만족도·취업률·별점이 모두 있는 과정을 기존 정렬 순서 안에서 우선 노출합니다.

변경 내용

CourseListRequest.java

  • Boolean prioritizeFull 필드 추가
  • null/false이면 기존 동작 유지 (하위 호환성 보장)

CourseSessionSpecification.java

  • orderByCompleteDataFirst() — 완전한 데이터 우선순위(CASE WHEN) 표현식을 기존 ORDER BY 앞에 삽입
  • orderByLatest() / orderBySatisfaction() / orderByEmploymentRate() — Pageable Sort 대신 Criteria ORDER BY로 정렬할 수 있도록 추가

CourseService.java

  • prioritizeFull=true 시 LATEST/SATISFACTION/EMPLOYMENT_RATE 정렬을 Criteria ORDER BY로 전환
  • 모든 정렬 타입에 orderByCompleteDataFirst() 를 체이닝하여 완전성 우선순위 적용

우선순위 판단 기준

다음 4가지를 모두 만족하는 과정이 앞에 노출됩니다.

조건 필드
기관 이미지 있음 institution.profileImageUrl IS NOT NULL
만족도 있음 course.stdgScor IS NOT NULL
취업률 있음 session.employmentRate IS NOT NULL
별점 있음 Review 또는 CrawledReview 에 리뷰 1건 이상

동작 방식

  • prioritizeFull=false 또는 미전달: 기존 정렬 동작 그대로 유지
  • prioritizeFull=true: ORDER BY 앞에 completePriority(0 or 1) 삽입 → 완전한 과정이 기존 정렬 내 앞쪽에 위치

테스트 체크리스트

  • prioritizeFull=true + 최신순: 완전한 과정이 앞에 오고 그 안에서 최신순 유지
  • prioritizeFull=true + 만족도순/취업률순/마감임박순/인기순 동일 확인
  • prioritizeFull=false(미전달): 기존 정렬 결과와 동일한지 확인

@yongseong123
yongseong123 force-pushed the feat/prioritize-complete-courses branch from 33a6f75 to 621475e Compare June 24, 2026 06:24
@yongseong123 yongseong123 self-assigned this Jun 24, 2026
- findOrJoin() 헬퍼 추가: 동일 Specification 체인 내 course/institution
  JOIN을 재사용하여 orderBySatisfaction + orderByCompleteDataFirst 조합 시
  발생하던 중복 JOIN 방지
- reviewCount/crawledReviewCount COUNT 서브쿼리를 EXISTS 서브쿼리로 교체:
  첫 번째 일치 행에서 단락(short-circuit)되어 row별 집계 비용 제거
@yongseong123
yongseong123 merged commit 1ef1904 into main Jun 24, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: 과정 목록 조회 시 완전한 데이터 보유 과정 우선 표시 파라미터 추가

1 participant